#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//
//int Fun(int n)
//{
//    if (n == 5)
//        return 2;
//    else
//        return 2 * Fun(n + 1);
//}
//int main()
//{
//    printf("%d", Fun(2));
//    return 0;
//}

//#include <stdio.h>
//#include <assert.h>
//int sqr(int n, int k)
//{
//	assert(n && k >= 0);
//	if (k == 0)
//	{
//		return 1;
//	}
//	if (k == 1)
//	{
//		return n;
//	}
//	else
//		return sqr(n, k - 1) * n;
//}
//int main()
//{
//	printf("%d", sqr(3, 3));
//	return 0;
//}
//#include <stdio.h>
//#include <assert.h>
//
//int Digitalsum(int n)
//{
//	assert(n > 0);
//	if (n < 10)
//	{
//		return n;
//	}
//	else
//		return n % 10 + Digitalsum(n / 10);
//}
//int main()
//{
//	printf("%d", Digitalsum(259));
//	return 0;
//}

//#include <stdio.h>
//#include <assert.h>
//
//int my_strlen(const char* str)
//{
//	if (*str == '\0')
//	{
//		return 0;
//	}
//	else
//		return 1 + my_strlen(str + 1);
//}
//int main()
//{
//	char a[] = "abcdef";
//	printf("%d", my_strlen(&a));
//	return 0;
//}
//#include <stdio.h>
//#include <assert.h>
//
//int Digital(int n)
//{
//	if (n < 0)
//	{
//		printf("-");
//		n = -n;
//	}
//	if (n == 0)
//	{
//		return;
//	}
//	if (n / 10 != 0) {
//		Digital(n / 10);
//	}
//	printf("%d", n % 10);
//}
//int main()
//{
//	Digital(259);
//	return 0;
//}

//#include <stdio.h>
//#include <assert.h>
//
//int fib(int n)
//{
//	assert(n >= 0);
//	if (n == 1)
//	{
//		return 1;
//	}
//	else if (n == 0)
//	{
//		return 0;
//	}
//	else
//		return fib(n - 1) + fib(n - 2);
//}
//int main()
//{
//	int n;
//	scanf("%d", &n);
//	printf("%d", fib(n));
//	return 0;
//}


//#include <stdio.h>
//#include <assert.h>
//
//void reverse_string( char* left, char* right)
//{
//	if (right <= left)
//		return;
//	char tmp = *left;
//	*left = *right;
//	*right = tmp;
//	reverse_string(left + 1, right - 1);
//}
//int main()
//{
//	char a[20] = "CS-advent";
//	int sz = sizeof(a[20] / a[0]);
//	printf("%d", sz);
//	reverse_string(a,a+sz-1);
//	return 0;
//}

#include <stdio.h>
#include <assert.h>

int ans(int n)
{
	assert(n >= 0);
	if (n <= 1)
	{
		return 1;
	}
	else
		return n * ans(n - 1);
}
int main()
{
	printf("%d", ans(4));
	return 0;
}